home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Magazin: Amiga-CD 1996 November & December
/
Amiga-CD 1996 #11-12.iso
/
pd-disketten
/
dms-gepackt
/
5_96
/
apd-5-96-2.dms
/
apd-5-96-2.adf
/
Amiga-E-Kurs
/
Listing_1.e
next >
Wrap
Text File
|
1996-04-15
|
1KB
|
47 lines
/* Sortieralgos als E-Modul, ©95 M. Bennicke */
OPT MODULE
PROC tausch(feld:PTR TO LONG,a,b)
DEF hilf -> Hilfsvariable
hilf:=feld[a] -> a zwischenspeichern
feld[a]:=feld[b] -> b in a kopieren
feld[b]:=hilf -> b erhält Wert von a
ENDPROC
EXPORT PROC quick(feld:PTR TO LONG,min,max)
DEF links,rechts,vgl
vgl:=feld[(min+max)/2] -> Vergleichswert
links:=min -> aus Mitte nehmen
rechts:=max
REPEAT
-> Feld von links & rechts durchsuchen
WHILE feld[links]<vgl DO INC links
WHILE feld[rechts]>vgl DO DEC rechts
IF links<=rechts -> noch nicht überkreuzt?
tausch(feld,links,rechts) -> vertauschen
INC links -> diese Elemente überspr.
DEC rechts -> und Suche fortsetzen
ENDIF
UNTIL links>rechts -> olange nicht überkreuzt
/* bis neue Teilfelder nur noch 1 Element lang
sind, diese genauso sortieren */
IF links<max THEN quick(feld,links,max)
IF rechts>min THEN quick(feld,min,rechts)
ENDPROC
EXPORT PROC bubble(feld:PTR TO LONG,min,max)
DEF i,j
FOR i:=max-1 TO 0 STEP -1
FOR j:=0 TO i -> jedes Mal 1 Schritt weniger
-> jedes Element mit Nachfolger vergleichen
IF feld[j]>feld[j+1] THEN tausch(feld,j,j+1)
ENDFOR
ENDFOR
ENDPROC